%% DD

\chapter{Teknik Pemrograman}

Alat pertama yang tercatat telah dijalankan dengan menggunakan program adalah mesin tenun yang dibuat oleh \textbf{Joseph-Marie Jacquard} (1752-1834) yang berkebangsaan Perancis. Alat tersebut dikenal dengan nama Jacquard Weaving Loom. Untuk menjalankan mesinnya tersebut, Jacquard menyimpan instruksi-instruksi pengendali mesin dalam bentuk kartu-kartu berlubang.

Mesin yang sudah dianggap sebagai komputer yang telah dapat diprogram adalah Analitycal Engine yang dibuat oleh Charles Babbage. Pemrograman Babbage's Analitycal Engine ini dilakukan oleh \textbf{Lady Augusta Ada Byron} (1815-1852) yang kemudian dianggap sebagai pemrogram pertama.

Teknik pemrograman yang dipergunakan pada saat itu tentunya jauh berbeda dengan teknik pemrograman yang dikenal sekarang. Pada saat ini teknik pemrograman telah mempunyai kaidah-kaidah pemrograman yang sangat membantu para pemrograman. Paradigma terbaru yang dikenal dalam teknik pemrogramanan pada saat ini adalah paradigma yang berorientasi pada obyek (\emph{object oriented programming}). Namun demikian tidak berarti bahwa hanya dengan pemrograman berorientasi obyek seseorang dapat membuat perangkat lunak yang dapat dijalankan pada komputer.

Teknik pemrograman lain yang lebih dulu dan masih banyak dipergunakan oleh para pemrogram adalah teknik pemrograman terstruktur (\emph{structured programming}). Dalam pemrograman berorientasi obyek, kaidah pemrograman terstruktur ini tetap dipergunakan. Dengan demikian dapat dikatakan bahwa pemrograman berorientasi obyek merupakan perkembangan lebih lanjut dari pemrograman terstruktur dan untuk dapat menguasai teknik yang berorientasi pada obyek, seorang pemrograman terlebih dahulu harus tahu teknik pemrograman terstruktur.


\section{Pemrograman terstruktur}

Dalam kehidupan sehari-hari suatu masalah seringkali dapat diselesaikan dengan berbagai cara. Demikian pula halnya masalah yang akan diselesaikan dengan menggunakan komputer, seringkali mempunyai berbagai cara penyelesaian. Namun demikian pada umumnya kita dapat membedakan bahwa dalam hal tertentu cara yang satu lebih baik dari cara yang lain.

Teknik pemrograman terstruktur merupakan suatu teknik pemrograman yang dipercaya dapat memberikan kecepatan dan efisiensi pelaksanaan program yang lebih baik dibandingkan dengan teknik tidak terstruktur (istilah yang diberikan untuk teknik pemrograman yang dilakukan sebelum dikenalnya teknik pemrograman terstruktur). Hal ini disebabkan karena pemrograman terstruktur telah dilengkapi dengan kaidah-kaidah yang dibuat berdasarkan mekanisme atau cara kerja komputer dalam melaksanakan instruksi. Ciri-ciri dari teknik pemrograman terstruktur antara lain adalah:
\begin{itemize}

\item Program dirancang secara \emph{top-bottom}, yaitu dengan menuliskan langkah-langkah besar dalam pemecahan masalah untuk kemudian merinci menjadi beberapa langkah-langkah yang lebih kecil.

\item	Setiap langkah merupakan blok (\emph{block}) atau struktur (\emph{structure}) tertentu.

\item Setiap langkah dapat dikategorikan dalam level tertentu. Beberapa langkah yang merupakan rincian dari langkah tertentu mempunyai level yang sama.

\item	Setiap blok atau struktur hanya mempunyai satu jalan masuk dan satu jalan keluar.

\item Blok atau struktur yang mempunyai tugas khusus atau seringkali dipergunakan diperlakukan secara khusus dalam bentuk \emph{sub program}.

\item Tidak ada lonjatan langkah tanpa syarat (\emph{unconditional jump}).

\end{itemize}

Dengan mengikuti kaidah pada teknik pemrograman terstruktur, maka program yang dihasilkan akan dapat akan dilaksanakan oleh komputer dalam waktu yang lebih cepat dari program yang dibuat tanpa memperhatikan kaidah pemrograman terstruktur.


\section{Langkah dalam pemrograman terstruktur}

Suatu permasalahan yang akan diselesaikan dengan cara pemrograman terstrukur akan diuraikan dalam menjadi langkah-langkah pemecahan yang lebih kecil. Dalam setiap penguraian maka hanya akan didapat tiga kemungkinan jenis langkah, yaitu:
\begin{itemize}

\item	Langkah terurut (\emph{sequence})

Sekumpulan instruksi yang dilaksanakan urut satu persatu mulai dari yang instruksi pertama, kedua, ketiga, dan seterusnya disebut sebagai langkah terurut (sequence). Suatu masalah yang kompleks pada umumnya tidak cukup hanya diselesaikan dengan langkah terurut saja.

\item Langkah pengambilan keputusan (\emph{decision})

Seringkali pelaksanaan suatu langkah memerlukan kondisi/syarat tertentu. Apabila ditemukan kasus dimana sekumpulan intruksi hanya akan dilakukan berdasarkan evaluasi suatu kondisi tertentu, maka langkah yang dilakukan tersebut disebut sebagai langkah pengambilan keputusan. Langkah pengambilan keputusan dapat mempunyai dua alternatif kumpulan instruksi atau lebih yang dapat dipilih berdasarkan kondisi yang harus dievaluasi terlebih dahulu.

\item Langkah pengulangan (\emph{repetition})

Seringkali sekumpulan instruksi harus dilaksanakan berkali-kali. Langkah pengulangan merupakan cara untuk melakukan instruksi yang perlu dilakukan secara berulang-ulang. Jumlah pengulangan yang perlu dilakukan dalam langkah pengulangan dapat tertentu maupun tidak tertentu. Dalam hal langkah pengulangan tertentu, instruksi akan dilaksanakan sebanyak jumlah pengulangan yang telah ditentukan, sedangkan bila jumlah pengulangan belum tertentu langkah pengulangan akan dihentikan berdasarkan evaluasi terhadap kondisi penghentian (\emph{stopping condition}).

\end{itemize}


\section{Dokumentasi algoritma dalam pemrograman terstruktur}

Dokumentasi merupakan kegiatan penting yang sering terlupakan oleh banyak orang. Pembuatan program yang kompleks akan selalu memerlukan dokumentasi. Dalam membuat program seorang pemrogram seringkali menuliskan dahulu rancangan langkah-langkah atau algoritma yang akan dilakukannya. Selanjutnya tulisan/ rancangan tersebut dapat dijadikan dokumentasi dari algoritma program yang dibuatnya. Dokumentasi tersebut suatu saat akan berguna untuk mengingatkan kembali apa yang telah dilakukan dan dokumentasi juga dapat dipergunakan untuk dijadikan acuan atau referensi apabila kelak akan melakukan perbaikan/ penyempurnaan. 

Dalam pembuatan suatu perangkat lunak yang kompleks dan melibatkan banyak orang, dokumentasi algoritma menjadi mutlak diperlukan. Selain untuk pengingat, dokumentasi algoritma berguna sebagai sarana komunikasi antar pelaksana yang terlibat dalam pembuatan perangkat lunak tersebut. pada umumnya dokumentasi dari program akan berisi pseudocode atau flowchart yang telah dilengkapi dengan berbagai penjelasan untuk memudahkannya. Bentuk penulisan dokumentasi dari suatu program khususnya yang menggunakan pseudocode akan sangat membantu pembacaan dokumentasi tersebut.
